export default {
  namespaced: true,

  state: {
    // 购物车中的商品列表
    cartItems: uni.getStorageSync('cart')
      ? JSON.parse(uni.getStorageSync('cart'))
      : [],
  },

  getters: {
    // 统计购物车中商品的总数量
    total(state) {
      return state.cartItems.reduce((sum, item) => sum + item.goods_count, 0)
    },

    // 选中的商品总数
    checkedTotal(state) {
      return state.cartItems.reduce((sum, item) => {
        return sum + (item.goods_state ? item.goods_count : 0)
      }, 0)

      // return 99
    },

    // 选中的商品总价
    checkedPrice(state) {
      return state.cartItems.reduce((sum, item) => {
        return sum + (item.goods_state ? item.goods_count * item.goods_price : 0)
      }, 0)
    },
  },

  mutations: {
    addToCart(state, item) {
      // 根据 商品id 查询购物车中是否存在这件商品
      const existedItem = state.cartItems.find(
        (x) => x.goods_id === item.goods_id
      )

      if (existedItem) {
        // 如果购物车中已经有这件商品，则更新数量
        existedItem.goods_count++
      } else {
        // 如果购物车中没有这件商品，则添加进去
        state.cartItems.push(item)
      }

      // 将购物车信息保持到本地缓存中
      uni.setStorageSync('cart', JSON.stringify(state.cartItems))
    },

    updateState(state, item) {
      // item.goods_id 找到对应项 选中取反

      // 在 store 中查找对应的商品数据
      const result = state.cartItems.find((x) => x.goods_id === item.goods_id)

      if (result) {
        // 更新查找到的商品数据的选中状态
        result.goods_state = !result.goods_state

        // 持久化到本地存储
        uni.setStorageSync('cart', JSON.stringify(state.cartItems))
      }
    },
  },

  actions: {},
}
